#filename "wpj.smc"
#offset $0200

#define ITEMNAMES $DF0E08
#define WRITE $7F
#define BANK+ E4

code wpjItem_vwf {
%position $FE53
JSL $EFFEC0
NOP

%position $2FFEC0
PHP

; clear out 7FE400 to $7FE500
LDX #$0000
LDA #$0000
labelQ:
STA WRITEBANK+00,X
INX
INX
CPX #$0100
BNE labelQ

LDX $04
LDA ITEMNAMES,X		; load the word's initial x pos
AND #$00FF
STA $00			; save it as $00
INX
PHX

;labelS:
;BRA labelS

; begin loop
label1:
SEP #$20
STZ $01			; clear the letter mask
REP #$20

LDA $00
AND #$00F8			; Y = Writing position = X Pos >> 3 << 5
ASL
ASL
TAY

PLX				; load reading position
TXA
AND #$000F
BEQ labelE			; quit if we have gone too far
LDA ITEMNAMES,X
AND #$00FF
BEQ labelE			; quit if letter = 0
INX
PHX				; store reading position

ASL
ASL
ASL
TAX				; X = font offset = letter * 8

labelA:
SEP #$20
LDA $DF0BF8,X		; load line from font
INX
STA $05			; store line into shift variable
ORA $01
STA $01			; OR onto letter mask ($01)

STZ $04
REP #$20
LDA $00
AND #$0007

label2:
BEQ label3
LSR $04			; shift the line
DEC A
BRA label2

label3:
PHX
TYX				; store the line
SEP #$20
LDA $05
ORA WRITEBANK+01,X
STA WRITEBANK+01,X		; left side
LDA $04
STA WRITEBANK+21,X		; right side
PLX

INY
INY
REP #$20
TYA
AND #$000F			; return to top if 8 lines aren't done
BNE labelA

SEP #$20
LDA #$09			; calculate width of letter
label4:
LSR $01
DEC A
BEQ label5
BCC label4
BRA label6

label5:
LDA #$03			; width = 4 if letter is a space

label6:
INC A				; add letter padding
CLC
ADC $00
STA $00			; update x position

BRA label1

labelE:
; modify colors of 7FE400 to $7FE500
LDX #$0000
labelN:
SEP #$20
LDA #$FF
STA WRITEBANK+00,X	; plane 0 = #$FF
LDA WRITEBANK+01,X
EOR #$FF
STA WRITEBANK+01,X	; plane 1 = Inverse of letter
STA WRITEBANK+11,X	; plane 3 = Inverse of letter
INX
INX
REP #$20
TXA
AND #$000F
BNE labelN
TXA
CLC
ADC #$0010
TAX
CPX #$0100
BNE labelN

LDA #$FFFE
STA $00			; mark that we are done
PLP
RTL

%position $FE69
LDA $06
%position $FE75		; our letters start in memory at 7FE400
%data $BANK+00
%position $FE8C
%data WRITE
%position $02BE6D		; set the 8x8 font, item font, etc to $DF0000
%data $0000
%position $F058		; move item pics
%data $2000
%position $FDBE		; move item pics
%data $2000
}

